package com.deity.deitymvp.M.Impl;

import com.deity.deitymvp.Bean.DataBean;
import com.deity.deitymvp.M.Interfa.IM;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import cn.finalteam.okhttpfinal.BaseHttpRequestCallback;
import cn.finalteam.okhttpfinal.HttpRequest;
import okhttp3.Headers;

/**
 * 　　　　　　　　 ┏┓　　　┏┓+ +
 * 　　　　　　　┏┛┻━━━┛┻┓ + +
 * 　　　　　　　┃　　　　　　　┃
 * 　　　　　　　┃　　　━　　　┃ ++ + + +
 * 　　　　　　┃ ████━████ ┃+
 * 　　　　　　　┃　　　　　　　┃ +
 * 　　　　　　　┃　　　┻　　　┃
 * 　　　　　　　┃　　　　　　　┃ + +
 * 　　　　　　　┗━┓　　　┏━┛
 * 　　　　　　　　　┃　　　┃ + + + +
 * 　　　　　　　　　┃　　　┃　　　　Code is far away from bug
 * 　　　　　　　　　┃　　　┃ + 　　　　with the animal protecting
 * 　　　　　　　　　┃　　　┃神兽保佑,代码无bug
 * 　　　　　　　　　┃　　 　┃　　+
 * 　　　　　　　　　┃　 　 　┗━━━┓ + +
 * 　　　　　　　　　┃ 　　　 　　　　┣┓
 * 　　　　　　　　　┃ 　　　 　　　　┏┛
 * 　　　　　　　　　┗┓┓┏━┳┓┏┛ + + + +
 * 　　　　　　　　　　┃┫┫　┃┫┫
 * 　　　　　　　　　　┗┻┛　┗┻┛+ + + +
 * ━━━━━━何必要互相伤害━━━━━━━━━━━━━━━━━━
 * 包名：com.deity.deitymvp.M.Impl
 * 项目名称：DeityMVP
 * 作者：Deity
 * 创建时间： 2016/7/2-22:21
 * 类的描述：M层的实现类，一般用于进行网络访问或者去他方式的获取数据！
 */

public class MI implements IM {


    @Override
    public void loadData(final OnLoadDataLitener litener) {
        //进行网络访问获取数据
        HttpRequest.get("http://www.tuling123.com/openapi/api?key=6af9822f5491fadfc142b53818bbd63a&info=666",new BaseHttpRequestCallback<String>(){

            @Override
            protected void onSuccess(Headers headers, String o) {
                super.onSuccess(headers, o);
                //解析数据成模型类对象
                DataBean dataBean = parseJsonToDataBeanData(o);
                //把对象传递给P层
                litener.success(dataBean);
            }

            @Override
            public void onFailure(int errorCode, String msg) {
                super.onFailure(errorCode, msg);
                //如果你还是需要严谨的返回网络访问错误信息可在此传递
                litener.failure(errorCode,msg);
            }
        });
    }

    public interface OnLoadDataLitener {
        /**
         * 网络访问成功返回数据
         * @param dataBean 数据
         */
        void success(DataBean dataBean);

        /**
         * 网络访问失败返回错误码和错误信息
         * @param errorCode 错误码
         * @param msg 错误信息
         */
        void failure(int errorCode, String msg);
    }

    //Gson的数据解析方法
    public DataBean parseJsonToDataBeanData(String json) {
        Gson gson = new Gson();
        DataBean dataBean = gson.fromJson(json, new TypeToken<DataBean>() {
        }.getType());
        return dataBean;
    }
}


